package 技巧.多数元素;

/**
 * 解题思路：
 * 怎么判断出最多的数
 * 众数操作总数的一多半
 * 这样的话众数的血量就是最大的
 * 然后比较血量可以得出出众数
 * */
class Solution1 {
    public int majorityElement(int[] nums) {
        // 当前的候选元素
        int ans = 0;
        // 候选元素的血量
        int hp = 0;
        for(int x : nums){
            // 如果候选元素血量为0，更换为当前元素，血量为1
            if(hp == 0){
                ans = x;
                hp = 1;
            }else{
                // 否则，如果当前元素等于候选元素，血量加1，否则减1
                hp += x == ans ? 1 : -1;
            }
        }
        return ans;
    }
}